package com.cristina.attention.service;

import com.alibaba.fastjson.JSON;
import com.cristina.attention.entity.Message;
import com.cristina.attention.mapper.MessageMapper;
import com.cristina.attention.mp.base.BaseServiceImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author by Attention
 * @Classname MessageService
 * @Date 2021/12/7
 */
@Service
@Slf4j
@AllArgsConstructor
public class MessageServiceImpl extends BaseServiceImpl<MessageMapper, Message> implements MessageService {

    private final GroupMemberService groupMemberService;

    @Override
    public boolean syncSimpleMessageRecord(String message) {
        List<Message> messages = JSON.parseArray(message, Message.class);
        return this.saveBatch(messages);
    }

    /**
     *
     * 群聊同步 - 每一条消息都要发送给所有群成员(包括发送者自己), 一条群消息就会对应消息表的 n 条记录, 假设一个群人数上线为
     * 10人, 这10人一人发一条消息, 就会产生 10*n 条消息记录. 扩散读
     * TODO 假设在保存数据库的过程中, 其中一个群成员退群了, 那么这条记录有必要进行下去吗? 是否加锁?
     * 暂时不对并发做处理,
     *
     * @param msg
     * @return
     */
    @Override
    public boolean syncGroupMessageRecord(String msg) {
        List<Message> messages = JSON.parseArray(msg, Message.class);
        return saveBatch(messages);
    }
}
